package com.skyworthclub.competition.service;

import java.util.Optional;

/**
 * @author li
 * @version 1.0
 * @date 2019-07-07 15:18
 **/
public interface RedisCacheService<T> {

    /** 将entity保存到key中
     * @param key key
     * @param entity entity
     */
    void set(String key, T entity);

    /** 删除键值
     * @param key 键
     */
    void delete(String key);

    /** 获取值
     * @param key 键
     * @return entity
     */
    Optional<T> get(String key);

    /** 是否存在键
     * @param key 键
     * @return boolean
     */
    boolean exists(String key);

    /** 设置hash key对应的field字段
     * @param key  hash key
     * @param field  field
     * @param value value
     */
    void setField(String key, String field, String value);

    /** 获取field的值
     * @param key   hash键
     * @param field hash字段
     * @return value
     */
    Object getField(String key, String field);

    /** 删除hash key的field
     * @param key hash键
     * @param field hash字段
     */
    void deleteField(String key, String field);

}
